home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / fb386 / hiroki / hiroki.bas next >
BASIC Source File  |  1994-06-01  |  6KB  |  215 lines

  1. 10 SCREEN@ 0:CLS:CLEAR
  2. 20 '
  3. 30 '=========================タイトル表示===============================
  4. 40 '
  5. 50 SYMBOL(100,100),"石取りゲーム",5,5,%9
  6. 60 SYMBOL(365,450),"よろしいですか?    YES    NO",1,1,0
  7. 70 SYMBOL(225,322),"----- GAMEPLAY -----",1,1,7
  8. 80 SYMBOL(225,360),"------- 終了 -------",1,1,7
  9. 90 MOUSE 0:MOUSE 1,320,240,1:MOUSE 3,0,3:MOUSE 3,1,3
  10. 100 WHILE MOUSE(2,0)<>-1:WEND
  11. 110 TS=0:IF MOUSE(2,0)=-1 THEN 120 ELSE 100
  12. 120 MA=MOUSE(1)
  13. 130 IF MA>318 AND MA<343 THEN TS=1:GOTO 150
  14. 140 IF MA>356 AND MA<381 THEN 160 ELSE 110
  15. 150 SYMBOL(225,322),"----- GAMEPLAY -----",1,1,%11:TA=2:GOTO 170
  16. 160 SYMBOL(225,360),"------- 終了 -------",1,1,%11:TA=3:GOTO 170
  17. 170 WAIT 20:MOUSE 4,500,435,605,465
  18. 180 SYMBOL(365,450),"よろしいですか?    YES    NO",1,1,7
  19. 190 WHILE MOUSE(2,0)<>-1 :WEND
  20. 200 MB=MOUSE(0)
  21. 210 IF MB>500 AND MB<550 THEN 230 
  22. 220 IF MB>555 AND MB<605 THEN 60 ELSE 190 
  23. 230 IF TS=1 THEN 310 ELSE 240
  24. 240 END
  25. 250 '
  26. 260 '=======================メインプログラム=============================
  27. 270 '
  28. 280 '
  29. 290 '---------------------------盤を書く---------------------------------
  30. 300 '
  31. 310 WAIT 20:CLS:SCREEN@ 0
  32. 320 LINE(161,1)-(638,478),PSET,0,BF
  33. 330 LINE(160,0)-(639,479),PSET,4,B
  34. 340 FOR BA=1 TO 8
  35. 350 LINE(BA*60+160,0)-(BA*60+160,479),PSET,4
  36. 360 NEXT BA
  37. 370 FOR BB=1 TO 8
  38. 380 LINE(160,BB*60)-(639,BB*60),PSET,4
  39. 390 NEXT BB
  40. 400 SYMBOL(0,0),"石取り",3.5!,4,1
  41. 410 IF T=0 THEN GOSUB *一回戦 
  42. 420 IF T=1 THEN GOSUB *二回戦
  43. 430 LOCATE ,19:PRINT"    赤      個"
  44. 440 LOCATE ,21:PRINT"    青     個"
  45. 450 LOCATE ,23:PRINT"   右クリック=終了"
  46. 460 '
  47. 470 '----------------------盤の状態を初期化する--------------------------
  48. 480 '
  49. 490 DEFINT A-Z:DIM BD%(9,9)
  50. 500 FOR A=1 TO 8
  51. 510  FOR B=1 TO 8
  52. 520   BD(A,B)=0
  53. 530  NEXT B
  54. 540 NEXT A
  55. 550 FOR A=0 TO 9
  56. 560  FOR B=0 TO 9 STEP 9
  57. 570   BD(A,B)=-1
  58. 580   BD(B,A)=-1
  59. 590  NEXT B
  60. 600 NEXT A
  61. 610 D=1
  62. 620 FOR C=0 TO 7
  63. 630 RANDOMIZE TIME
  64. 640 SC=INT(RND*8)+1:SD=INT(RND*8)+1
  65. 650 IF BD(SC,SD)<>0 THEN 640
  66. 660 BD(SC,SD)=D
  67. 670 IF D=1 THEN D=2 ELSE D=1
  68. 680 NEXT C
  69. 690 '
  70. 700 '---------------------マウスカーソルの準備---------------------------
  71. 710 '
  72. 720 MOUSE 0
  73. 730 MOUSE 1,320,240,1 :MOUSE 3,0,3:MOUSE 3,1,3
  74. 740 MOUSE 4,160,0,639,479
  75. 750 '
  76. 760 '--------------------------変数の用意--------------------------------
  77. 770 '
  78. 780 IF T=2 THEN TA=1 ELSE TA=2
  79. 790 UU=0
  80. 800 '
  81. 810 '-------------------盤の現在の状態を表示する-------------------------
  82. 820 '
  83. 830 WW=0:RR=0
  84. 840 FOR A=1 TO 8
  85. 850  FOR B=1 TO 8
  86. 860 IF BD(A,B)=1 THEN CIRCLE(190+(A-1)*60,30+(B-1)*60),25,%2,,,,F:WW=WW+1
  87. 870 IF BD(A,B)=2 THEN CIRCLE(190+(A-1)*60,30+(B-1)*60),25,%5,,,,F:RR=RR+1
  88. 880  NEXT B
  89. 890 NEXT A
  90. 900 LOCATE 8,19:PRINT WW
  91. 910 LOCATE 8,21:PRINT RR
  92. 920 IF WW+RR=64 THEN GOSUB *勝敗
  93. 930 IF T=1 THEN 310
  94. 940 IF T=3 THEN 950 ELSE 990
  95. 950 WAIT 50:WHILE MOUSE(2,0)<>-1 AND MOUSE (2,1)<>-1:WEND
  96. 960 IF MOUSE (2,0)=-1 THEN 980 ELSE 970
  97. 970 IF MOUSE (2,1)=-1 THEN 2140 ELSE 950
  98. 980 ERASE BD:GOTO 10
  99. 990 WAIT 20
  100. 1000 '
  101. 1010 '-------------------マウスボタンの押下を待つ-------------------------
  102. 1020 '
  103. 1030 IF TA=2 THEN TC=1 ELSE TC=0
  104. 1040 IF TC=1 THEN GOSUB *石を置く
  105. 1050 WAIT 10
  106. 1060 SYMBOL(0,150),"思考中お待ち下さい",1,1,0
  107. 1070 SYMBOL(0,170),"あなたの番です",1,1,7
  108. 1080 WHILE MOUSE(2,0)<>-1 AND MOUSE(2,1)<>-1:WEND
  109. 1090 IF MOUSE(2,0)=-1 THEN 1100 ELSE 1220
  110. 1100 '
  111. 1110 '--------------------石を置いた場所を調べる--------------------------
  112. 1120 '
  113. 1130 MX=MOUSE(0):MY=MOUSE(1)
  114. 1140 IA=(MX-190)/60+1:IB=(MY-30)/60+1
  115. 1150 IF BD(IA,IB)=0 THEN 1230 ELSE 1160
  116. 1160 IF TC=1 THEN 1170 ELSE 1200
  117. 1170 SYMBOL(0,170),"あなたの番です",1,1,0
  118. 1180 SYMBOL(0,150),"思考中お待ち下さい",1,1,7
  119. 1190 GOTO 1040
  120. 1200 SYMBOL(0,150),"そこには置けません",1,1,7:WAIT 50
  121. 1210 SYMBOL(0,150),"そこには置けません",1,1,0:GOTO 1040
  122. 1220 END
  123. 1230 '
  124. 1240 '-----------上・下・左・右・左上・右上・左下・右下 の状態を調べる-----------
  125. 1250 '
  126. 1260 TT=0:UU=0:IF TA=2 THEN TB=1 ELSE TB=2
  127. 1270 '上
  128. 1280 JA=0:JB=-1
  129. 1290 GOSUB *状態チェック
  130. 1300 '下
  131. 1310 JA=0:JB=1
  132. 1320 GOSUB *状態チェック
  133. 1330 '左
  134. 1340 JA=-1:JB=0
  135. 1350 GOSUB *状態チェック
  136. 1360 '右
  137. 1370 JA=1:JB=0
  138. 1380 GOSUB *状態チェック
  139. 1390 '左上
  140. 1400 JA=-1:JB=-1
  141. 1410 GOSUB *状態チェック
  142. 1420 '左下
  143. 1430 JA=-1:JB=1
  144. 1440 GOSUB *状態チェック
  145. 1450 '右上
  146. 1460 JA=1:JB=-1
  147. 1470 GOSUB *状態チェック
  148. 1480 '右下
  149. 1490 JA=1:JB=1
  150. 1500 GOSUB *状態チェック
  151. 1510 IF UU=0 THEN 1160 ELSE 1520
  152. 1520 TA=TB:GOTO 800
  153. 1530 '
  154. 1540 '=========================サブルーチン===============================
  155. 1550 '
  156. 1560 '
  157. 1570 *状態チェック
  158. 1580 '
  159. 1590 TT=TT+1
  160. 1600 IF BD(IA+JA,IB+JB)=0 THEN 1690
  161. 1610 IF BD(IA+JA,IB+JB)=TA THEN 1620 ELSE 1690
  162. 1620 UU=UU+1
  163. 1630 BD(IA,IB)=TB
  164. 1640 CA=IA+JA:CB=IB+JB
  165. 1650 WHILE BD(CA,CB)<>TB AND BD(CA,CB)>0
  166. 1660  BD(CA,CB)=TB
  167. 1670  CA=CA+JA:CB=CB+JB
  168. 1680 WEND
  169. 1690 UU=UU+1:BD(IA,IB)=TB
  170. 1700 RETURN 
  171. 1710 '
  172. 1720 *石を置く
  173. 1730 '
  174. 1740 RANDOMIZE TIME
  175. 1750 IA=INT(RND*8)+1:IB=INT(RND*8+1)
  176. 1760 RETURN 1150
  177. 1770 *一回戦
  178. 1780 MOUSE 1,,,0
  179. 1790 LOCATE ,7:PRINT "二回戦行い、 合計数":PRINT "が多い方が勝ちとな":PRINT "ります。":PRINT "   PLAYER=青":PRINT "    COM  =赤":PRINT "先攻はCOMで行います。":PRINT "マウスの左ボタンを":PRINT "クリックして下さい。"
  180. 1800 WHILE MOUSE (2,0)<>-1:WEND
  181. 1810 CLS 4:MOUSE 1,,,1:WAIT 50
  182. 1820 RETURN
  183. 1830 '
  184. 1840 *二回戦
  185. 1850 '
  186. 1860 T=2
  187. 1870 MOUSE 1,,,0
  188. 1880 LOCATE ,7:PRINT "一回戦の結果は":PRINT "青"+STR$(RR)+"個、赤"+STR$(WW)+"個":PRINT "でした。":PRINT "二回戦はあなたが先":PRINT "攻です。":LOCATE ,12:PRINT "マウスの左ボタンを":PRINT "クリックして下さい。"
  189. 1890 WHILE MOUSE (2,0)<>-1:WEND
  190. 1900 CLS 4:MOUSE 1,,,1:WAIT 50
  191. 1910 RETURN
  192. 1920 *勝敗
  193. 1930 IF T=0 THEN 1940 ELSE 1970
  194. 1940 T=1:S=0
  195. 1950 SA=RR:SB=WW:ERASE BD
  196. 1960 GOTO 2130
  197. 1970 SC=SA+RR:SD=SB+WW
  198. 1980 MOUSE 1,,,0
  199. 1990 IF SC>SD THEN 2000 ELSE 2010
  200. 2000 SE$="PLAYER":GOTO 2020
  201. 2010 IF SC=SD THEN S=1 ELSE SE$="COM" 
  202. 2020 LINE(160,200)-(480,280),PSET,7,BF
  203. 2030 LINE(160,200)-(480,280),PSET,0,B
  204. 2040 LINE(162,202)-(478,278),PSET,0,B
  205. 2050 LINE(163,203)-(477,277),PSET,0,B
  206. 2060 SYMBOL(180,210),"PLAYER"+STR$(SC)+"個",1,1,0:WAIT 50
  207. 2070 SYMBOL(180,230),"COM   "+STR$(SD)+"個",1,1,0:WAIT 50
  208. 2080 IF S=0 THEN 2090 ELSE 2100
  209. 2090 SYMBOL(280,240),"で"+SE$+"の勝ちです。",1,1,0:GOTO 2110
  210. 2100 SYMBOL(280,240),"で同点です。",1,1,0
  211. 2110 T=3
  212. 2120 SYMBOL(240,260),"左クリック=タイトルヘ 右クリック=終了",1,1,0
  213. 2130 RETURN
  214. 2140 END
  215.